package com.kang.service;

import java.util.List;

import com.kang.pojo.ReturnOrder;
import com.kang.pojo.ReturnOrderItem;
import com.kang.pojo.ReturnRequestItem;
import com.vonechina.entity.page.ReturnAgentPage;
import com.vonechina.entity.page.ReturnOrderPage;
import com.vonechina.entity.page.ReturnRequestItemPage;

/**
 * 退回订单服务层
 * 
 * @author zs614
 *
 */
public interface ReturnOrderService {
	/**
	 * 分页查询退货订单
	 * 
	 * @param page
	 *            搜索条件实体类
	 * @return
	 */
	public List<ReturnOrder> listReturnOrder(ReturnOrderPage page);

	/**
	 * 更新退货订单
	 * 
	 * @param order
	 *            退货订单实体类
	 * @return
	 */
	public Integer updateReturnOrder(ReturnOrder order);

	/**
	 * 删除退货订单
	 * 
	 * @param order
	 *            退货订单实体类
	 * @return
	 */
	public Integer deleteReturnOrder(ReturnOrder order);

	/**
	 * 根据ID查询退货订单
	 * 
	 * @param returnOrderID
	 *            退货订单ID
	 * @return
	 */
	public ReturnOrder selectByID(Integer returnOrderID);

	/**
	 * 查询可退货物品批次
	 * 
	 * @param page
	 *            搜索条件实体类
	 * @return
	 */
	public List<ReturnRequestItem> listReturnRequestItem(ReturnAgentPage page);

	/**
	 * 新增退货订单
	 * 
	 * @param order
	 *            退货订单实体类
	 * @return
	 */
	public Integer addReturnOrder(ReturnOrder order);

	/**
	 * 提交退货订单
	 * 
	 * @param order
	 *            退货订单实体类
	 * @return
	 */
	public Integer submitReturnOrder(ReturnOrder order);

	/**
	 * 搜索符合条件可退货物品批次
	 * 
	 * @param page
	 *            搜索条件实体类
	 * @return
	 */
	public List<ReturnRequestItem> listReturnRequestItemNotIn(ReturnRequestItemPage page);

	/**
	 * 保存退货订单物品信息
	 * 
	 * @param order
	 *            退货订单ID
	 * @param sourceID
	 *            退货物品来源ID
	 * @return
	 */
	public Integer saveReturnOrderItem(ReturnOrder order, Integer[] sourceID);

	/**
	 * 查询退货订单物品信息
	 * 
	 * @param returnOrderID
	 *            退货订单ID
	 * @return
	 */
	public List<ReturnOrderItem> listOrderItem(Integer returnOrderID);

	/**
	 * 计算退货订单金额
	 * 
	 * @param order
	 *            退货订单实体类
	 * @return
	 */
	public Double countOrderPrice(ReturnOrder order);

	/**
	 * 结算退货订单
	 * 
	 * @param order
	 *            退货订单实体类
	 * @return
	 */
	public Integer settleOrder(ReturnOrder order);
}
